package com.ruoyi.logistics.service;

import java.io.InputStream;
import java.util.List;

import com.ruoyi.logistics.domain.DTO.QcLogisticsTrackingEsDTO;
import com.ruoyi.logistics.domain.QcLogisticsTracking;
import com.ruoyi.logistics.domain.Vo.QcLogisticsTrackingVo;
import org.springframework.data.domain.Page;
import org.springframework.data.elasticsearch.core.SearchHits;

/**
 * 物流追踪Service接口
 *
 * @author ruoyi
 * @date 2025-05-24
 */
public interface IQcLogisticsTrackingService {
    /**
     * 查询物流追踪
     *
     * @param id 物流追踪主键
     * @return 物流追踪
     */
    public QcLogisticsTracking selectQcLogisticsTrackingById(Long id);

    /**
     * 查询物流追踪列表
     *
     * @param qcLogisticsTracking 物流追踪
     * @return 物流追踪集合
     */
    public List<QcLogisticsTracking> selectQcLogisticsTrackingList(QcLogisticsTracking qcLogisticsTracking);

    /**
     * ES数据查询
     *
     * @param qcLogisticsTracking
     * @return
     */
    public SearchHits<QcLogisticsTrackingEsDTO> selectQcLogisticsTrackingEsList(QcLogisticsTrackingVo qcLogisticsTracking);

    /**
     * 获取对应上一页排序
     *
     * @param qcLogisticsTracking
     * @return
     */
    public String getScrollToPage(QcLogisticsTrackingVo qcLogisticsTracking);

    /**
     * 新增物流追踪
     *
     * @param qcLogisticsTracking 物流追踪
     * @return 结果
     */
    public int insertQcLogisticsTracking(QcLogisticsTracking qcLogisticsTracking);

    /**
     * 修改物流追踪
     *
     * @param qcLogisticsTracking 物流追踪
     * @return 结果
     */
    public int updateQcLogisticsTracking(QcLogisticsTracking qcLogisticsTracking);

    /**
     * 批量删除物流追踪
     *
     * @param ids 需要删除的物流追踪主键集合
     * @return 结果
     */
    public int deleteQcLogisticsTrackingByIds(Long[] ids);

    /**
     * 删除物流追踪信息
     *
     * @param id 物流追踪主键
     * @return 结果
     */
    public int deleteQcLogisticsTrackingById(Long id);

    /**
     * 数据导入
     *
     * @param inputStream
     * @param qcLogisticsTrackingService
     */
    public void importQcLogisticsTracking(InputStream inputStream, IQcLogisticsTrackingService qcLogisticsTrackingService);

    /**
     * 将数据导入数据库中
     *
     * @param list
     */
    public void importSetQcLogisticsTracking(List<QcLogisticsTracking> list);

    /**
     *
     */

    public void syncEsQcLogisticsTracking();
}
